Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Partition problem</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Partition_problem"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Partition_problem rootpage-Partition_problem skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Partition problem</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p>In <a href="Number_theory" title="Number theory">number theory</a> and <a href="Computer_science" title="Computer science">computer science</a>, the <b>partition problem</b>, or <b>number partitioning</b>,<sup id="cite_ref-FOOTNOTEKorf1998_1-0" class="reference"><a href="#cite_note-FOOTNOTEKorf1998-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> is the task of deciding whether a given <a href="Multiset" title="Multiset">multiset</a> <i>S</i> of positive integers can be <a href="Partition_of_a_set" title="Partition of a set">partitioned</a> into two subsets <i>S</i><sub>1</sub> and <i>S</i><sub>2</sub> such that the sum of the numbers in <i>S</i><sub>1</sub> equals the sum of the numbers in <i>S</i><sub>2</sub>. Although the partition problem is <a href="NP-complete" class="mw-redirect" title="NP-complete">NP-complete</a>, there is a <a href="Pseudo-polynomial_time" title="Pseudo-polynomial time">pseudo-polynomial time</a> <a href="Dynamic_programming" title="Dynamic programming">dynamic programming</a> solution, and there are <a href="Heuristic" title="Heuristic">heuristics</a> that solve the problem in many instances, either optimally or approximately. For this reason, it has been called "the easiest hard problem".<sup id="cite_ref-hayes_2-0" class="reference"><a href="#cite_note-hayes-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-FOOTNOTEMertens2006[httpsbooksgooglecombooksid4YD6AxV95zECpgPA125_125]_3-0" class="reference"><a href="#cite_note-FOOTNOTEMertens2006[httpsbooksgooglecombooksid4YD6AxV95zECpgPA125_125]-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p><p>There is an <a href="Optimization_problem" title="Optimization problem">optimization version</a> of the partition problem, which is to partition the multiset <i>S</i> into two subsets <i>S</i><sub>1</sub>, <i>S</i><sub>2</sub> such that the difference between the sum of elements in <i>S</i><sub>1</sub> and the sum of elements in <i>S</i><sub>2</sub> is minimized. The optimization version is <a href="NP-hard" class="mw-redirect" title="NP-hard">NP-hard</a>, but can be solved efficiently in practice.<sup id="cite_ref-multi_4-0" class="reference"><a href="#cite_note-multi-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p><p>The partition problem is a special case of two related problems:
</p>
<ul><li>In the <a href="Subset_sum_problem" title="Subset sum problem">subset sum problem</a>, the goal is to find a subset of <i>S</i> whose sum is a certain target number <i>T</i> given as input (the partition problem is the special case in which <i>T</i> is half the sum of <i>S</i>).</li>
<li>In <a href="Multiway_number_partitioning" title="Multiway number partitioning">multiway number partitioning</a>, there is an <a href="Integer" title="Integer">integer</a> parameter <i>k</i>, and the goal is to decide whether <i>S</i> can be partitioned into <i>k</i> subsets of equal sum (the partition problem is the special case in which <i>k</i> = 2).</li></ul>
<p>However, it is quite different to the <a href="3-partition_problem" title="3-partition problem">3-partition problem</a>: in that problem, the number of subsets is not fixed in advance – it should be |<i>S</i>|/3, where each subset must have exactly 3 elements. 3-partition is much harder than partition – it has no pseudo-polynomial time algorithm unless <b><a href="P_%3D_NP" class="mw-redirect" title="P = NP">P = NP</a></b>.<sup id="cite_ref-Garey_&amp;_Johnson_5-0" class="reference"><a href="#cite_note-Garey_&amp;_Johnson-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Examples">Examples</h2></div>
<p>Given <i>S</i> = {3,1,1,2,2,1}, a valid solution to the partition problem is the two sets <i>S</i><sub>1</sub> = {1,1,1,2} and <i>S</i><sub>2</sub> = {2,3}. Both sets sum to 5, and they <a href="Partition_of_a_set" title="Partition of a set">partition</a> <i>S</i>. This solution is not unique. <i>S</i><sub>1</sub> = {3,1,1} and <i>S</i><sub>2</sub> = {2,2,1} is another solution.
</p><p>Not every <a href="Multiset" title="Multiset">multiset</a> of positive integers has a partition into two subsets with equal sum. An example of such a set is <i>S</i> = {2,5}.
</p>
<div class="mw-heading mw-heading2"><h2 id="Computational_hardness">Computational hardness</h2></div>
<p>The partition problem is NP hard. This can be proved by reduction from the <a href="Subset_sum_problem" title="Subset sum problem">subset sum problem</a>.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> An instance of SubsetSum consists of a set <i>S</i> of positive integers and a target sum <i>T</i>; the goal is to decide if there is a subset of <i>S</i> with sum exactly&nbsp;<i>T</i>.
</p><p>Given such an instance, construct an instance of Partition in which the input set contains the original set plus two elements: <i>z</i><sub>1</sub> and <i>z</i><sub>2</sub>, with <i>z</i><sub>1</sub>&nbsp;=&nbsp;sum(S) and <i>z</i><sub>2</sub> =&nbsp;2<i>T</i>. The sum of this input set is sum(<i>S</i>)&nbsp;+&nbsp;<i>z</i><sub>1</sub>&nbsp;+&nbsp;<i>z</i><sub>2</sub> =&nbsp;2&nbsp;sum(<i>S</i>)&nbsp;+&nbsp;2<i>T</i>, so the target sum for Partition is&nbsp;sum(<i>S</i>)&nbsp;+&nbsp;<i>T</i>.
</p>
<ul><li>Suppose there exists a solution <i>S</i>′ to the SubsetSum instance. Then sum(<i>S</i>′) =&nbsp;<i>T</i>, so sum(S′&nbsp;∪&nbsp;z_1) =&nbsp;sum(<i>S</i>)&nbsp;+&nbsp;<i>T</i>, so <i>S</i>′&nbsp;∪&nbsp;z_1 is a solution to the Partition instance.</li>
<li>Conversely, suppose there exists a solution <i>S</i>′′ to the Partition instance. Then, <i>S</i>′′ must contain either <i>z</i><sub>1</sub> or <i>z</i><sub>2</sub>, but not both, since their sum is more than sum(<i>S</i>)&nbsp;+&nbsp;<i>T</i>. If S'' contains <i>z</i><sub>1</sub>, then it must contain elements from <i>S</i> with a sum of exactly&nbsp;<i>T</i>, so S'' minus <i>z</i><sub>1</sub> is a solution to the SubsetSum instance. If S'' contains <i>z</i><sub>2</sub>, then it must contain elements from S with a sum of exactly sum(<i>S</i>)&nbsp;−&nbsp;<i>T</i>, so the other objects in <i>S</i> are a solution to the SubsetSum instance.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Approximation_algorithms">Approximation algorithms</h2></div>
<p>As mentioned above, the partition problem is a special case of multiway-partitioning and of subset-sum. Therefore, it can be solved by algorithms developed for each of these problems. Algorithms developed for <a href="Multiway_number_partitioning" title="Multiway number partitioning">multiway number partitioning</a> include:
</p>
<ul><li><b><a href="Greedy_number_partitioning" title="Greedy number partitioning">Greedy number partitioning</a></b> – loops over the numbers, and puts each number in the set whose current sum is smallest. If the numbers are not sorted, then the runtime is O(<i>n</i>) and the approximation ratio is at most <b>3/2</b> ("approximation ratio" means the larger sum in the algorithm output, divided by the larger sum in an optimal partition). Sorting the numbers increases the runtime to O(<i>n</i>&nbsp;log&nbsp;<i>n</i>) and improves the approximation ratio to <b>7/6.</b> If the numbers are distributed uniformly in [0,1], then the approximation ratio is at most <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle 1+O\left({\frac {\log \log n}{n}}\right)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mn>1</mn>
<mo>+</mo>
<mi>O</mi>
<mrow>
<mo>(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<mrow>
<mi>log</mi>
<mo>⁡<!-- ⁡ --></mo>
<mi>log</mi>
<mo>⁡<!-- ⁡ --></mo>
<mi>n</mi>
</mrow>
<mi>n</mi>
</mfrac>
</mrow>
<mo>)</mo>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\textstyle 1+O\left({\frac {\log \log n}{n}}\right)}</annotation>
</semantics>
</math></span><img src="./a457a7db394b935809e7069f27e15ce88926781b.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.838ex; width:15.738ex; height:4.843ex;" alt="{\textstyle 1+O\left({\frac {\log \log n}{n}}\right)}" loading="lazy"></span> <a href="Almost_surely" title="Almost surely">almost surely</a>, and <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle 1+O\left({\frac {1}{n}}\right)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mn>1</mn>
<mo>+</mo>
<mi>O</mi>
<mrow>
<mo>(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<mn>1</mn>
<mi>n</mi>
</mfrac>
</mrow>
<mo>)</mo>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\textstyle 1+O\left({\frac {1}{n}}\right)}</annotation>
</semantics>
</math></span><img src="./ff660a8d18f48e07359894d5621fcd364e9cbc67.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:10.115ex; height:3.343ex;" alt="{\textstyle 1+O\left({\frac {1}{n}}\right)}" loading="lazy"></span> in expectation.</li>
<li><a href="Largest_differencing_method" title="Largest differencing method"><b>Largest Differencing Method</b></a> (also called the <b>Karmarkar–Karp algorithm</b>) sorts the numbers in descending order and repeatedly replaces numbers by their differences. The runtime complexity is O(<i>n</i>&nbsp;log&nbsp;<i>n</i>). In the worst case, its approximation ratio is similar – at most <b>7/6</b>. However, in the average case it performs much better than the <a href="Greedy_algorithm" title="Greedy algorithm">greedy algorithm</a>: when numbers are distributed uniformly in [0,1], its approximation ratio is at most <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle 1+1/n^{\Theta (\log n)}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mn>1</mn>
<mo>+</mo>
<mn>1</mn>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<msup>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="normal">Θ<!-- Θ --></mi>
<mo stretchy="false">(</mo>
<mi>log</mi>
<mo>⁡<!-- ⁡ --></mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
</mrow>
</msup>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\textstyle 1+1/n^{\Theta (\log n)}}</annotation>
</semantics>
</math></span><img src="./bfe2fbc6476e750c940f09e5c0dce152bd34119d.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:13.987ex; height:3.176ex;" alt="{\textstyle 1+1/n^{\Theta (\log n)}}" loading="lazy"></span> in expectation. It also performs better in simulation experiments.</li>
<li>The <b><a href="Multifit_algorithm" title="Multifit algorithm">multifit algorithm</a></b> uses binary search combined with an algorithm for <a href="Bin_packing_problem" title="Bin packing problem">bin packing</a>. In the worst case, its approximation ratio is <b>8/7</b>.</li>
<li>The <a href="Subset_sum_problem" title="Subset sum problem">subset sum problem</a> has an <a href="Polynomial-time_approximation_scheme" title="Polynomial-time approximation scheme"><b>FPTAS</b></a> which can be used for the partition problem as well, by setting the target sum to sum(<i>S</i>)/2.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Exact_algorithms">Exact algorithms</h2></div>
<p>There are <a href="Exact_algorithm" title="Exact algorithm">exact algorithms</a>, that always find the optimal partition. Since the problem is NP-hard, such algorithms might take exponential time in general, but may be practically usable in certain cases. Algorithms developed for <a href="Multiway_number_partitioning" title="Multiway number partitioning">multiway number partitioning</a> include:
</p>
<ul><li>The <a href="Pseudopolynomial_time_number_partitioning" title="Pseudopolynomial time number partitioning">pseudopolynomial time number partitioning</a> takes <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle O(nm)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mi>O</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mi>m</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\textstyle O(nm)}</annotation>
</semantics>
</math></span><img src="./b9eee64c65f5cf5edf49bb5a1da6242b3d15544b.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:7.018ex; height:2.843ex;" alt="{\textstyle O(nm)}" loading="lazy"></span> memory, where <span class="texhtml mvar" style="font-style:italic;">m</span> is the largest number in the input.</li>
<li>The <b>Complete Greedy Algorithm (CGA)</b> considers all partitions by constructing a <a href="Binary_tree" title="Binary tree">binary tree</a>. Each level in the tree corresponds to an input number, where the root corresponds to the largest number, the level below to the next-largest number, etc. Each branch corresponds to a different set in which the current number can be put. Traversing the tree in <a href="Depth-first_search" title="Depth-first search">depth-first</a> order requires only <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle O(n)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mi>O</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\textstyle O(n)}</annotation>
</semantics>
</math></span><img src="./e73234cd485b947e68d1d78823313db65ef226d7.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.977ex; height:2.843ex;" alt="{\textstyle O(n)}" loading="lazy"></span> space, but might take <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle O(2^{n})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mi>O</mi>
<mo stretchy="false">(</mo>
<msup>
<mn>2</mn>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\textstyle O(2^{n})}</annotation>
</semantics>
</math></span><img src="./87e7d38348af8ca63a6e198e78929f72639bb8f5.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:5.964ex; height:2.843ex;" alt="{\textstyle O(2^{n})}" loading="lazy"></span> time. The runtime can be improved by using a greedy heuristic: in each level, develop first the branch in which the current number is put in the set with the smallest sum. This algorithm finds first the solution found by <a href="Greedy_number_partitioning" title="Greedy number partitioning">greedy number partitioning</a>, but then proceeds to look for better solutions. Some variations of this idea <i>are</i> fully polynomial-time approximation schemes for the subset-sum problem, and hence for the partition problem as well.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup></li>
<li>The <b>Complete Karmarkar–Karp algorithm (CKK)</b> considers all partitions by constructing a binary tree. Each level corresponds to a pair of numbers. The left branch corresponds to putting them in different subsets (i.e., replacing them by their difference), and the right branch corresponds to putting them in the same subset (i.e., replacing them by their sum). This algorithm finds first the solution found by the <a href="Largest_differencing_method" title="Largest differencing method">largest differencing method</a>, but then proceeds to find better solutions. It runs substantially faster than CGA on random instances. Its advantage is much larger when an equal partition exists, and can be of several orders of magnitude. In practice, problems of arbitrary size can be solved by CKK if the numbers have at most 12 <a href="Significant_figures" title="Significant figures">significant digits</a>.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> CKK can also run as an <a href="Anytime_algorithm" title="Anytime algorithm">anytime algorithm</a>: it finds the KK solution first, and then finds progressively better solutions as time allows (possibly requiring exponential time to reach optimality, for the worst instances).<sup id="cite_ref-FOOTNOTEKorf1998_1-1" class="reference"><a href="#cite_note-FOOTNOTEKorf1998-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> It requires <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="O(n)">
<semantics>
<mrow>
<mi>O</mi>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mo stretchy="false">)</mo>
</mrow>
<annotation encoding="application/x-tex">O(n)</annotation>
</semantics>
</math></span><img src="./b5f77cd3ea7922fdedfe0394ede2434e3842f580.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.977ex; height:2.843ex;" alt="O(n)" loading="lazy"></span> space, but in the worst case might take <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="O(2^{n})">
<semantics>
<mrow>
<mi>O</mi>
<mo stretchy="false">(</mo>
<msup>
<mn>2</mn>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mrow>
<annotation encoding="application/x-tex">O(2^{n})</annotation>
</semantics>
</math></span><img src="./d5ef805487ed8047f438f0d766abb1fb4aec2162.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:5.964ex; height:2.843ex;" alt="O(2^{n})" loading="lazy"></span> time.</li></ul>
<p>Algorithms developed for <a href="Subset_sum_problem" title="Subset sum problem">subset sum</a> include:
</p>
<ul><li><b>Horowitz and Sanhi</b> – runs in time <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="O(2^{n/2}\cdot (n/2))">
<semantics>
<mrow>
<mi>O</mi>
<mo stretchy="false">(</mo>
<msup>
<mn>2</mn>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>⋅<!-- ⋅ --></mo>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>2</mn>
<mo stretchy="false">)</mo>
<mo stretchy="false">)</mo>
</mrow>
<annotation encoding="application/x-tex">O(2^{n/2}\cdot (n/2))</annotation>
</semantics>
</math></span><img src="./3e9cc45eee92714e931d07e766c98b249706b072.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:14.816ex; height:3.343ex;" alt="O(2^{n/2}\cdot (n/2))" loading="lazy"></span>, but requires <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="O(2^{n/2})">
<semantics>
<mrow>
<mi>O</mi>
<mo stretchy="false">(</mo>
<msup>
<mn>2</mn>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>2</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mrow>
<annotation encoding="application/x-tex">O(2^{n/2})</annotation>
</semantics>
</math></span><img src="./e81051c5c14d60db1e7227c6fa44a7205718a1c5.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:7.607ex; height:3.343ex;" alt="O(2^{n/2})" loading="lazy"></span> space.</li>
<li><b>Schroeppel and Shamir</b> – runs in time <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="O(2^{n/2}\cdot (n/4))">
<semantics>
<mrow>
<mi>O</mi>
<mo stretchy="false">(</mo>
<msup>
<mn>2</mn>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>⋅<!-- ⋅ --></mo>
<mo stretchy="false">(</mo>
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>4</mn>
<mo stretchy="false">)</mo>
<mo stretchy="false">)</mo>
</mrow>
<annotation encoding="application/x-tex">O(2^{n/2}\cdot (n/4))</annotation>
</semantics>
</math></span><img src="./ed050e19248212a2154066f096f4aebf3308b8cd.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:14.816ex; height:3.343ex;" alt="O(2^{n/2}\cdot (n/4))" loading="lazy"></span>, and requires much less space – <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle O(2^{n/4})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mi>O</mi>
<mo stretchy="false">(</mo>
<msup>
<mn>2</mn>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>4</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\textstyle O(2^{n/4})}</annotation>
</semantics>
</math></span><img src="./1f35c9fd85b8b95f82c1bce9c7f34eda95712fd7.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:7.607ex; height:3.176ex;" alt="{\textstyle O(2^{n/4})}" loading="lazy"></span>.</li>
<li><b>Howgrave-Graham and Joux</b> – runs in time <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle O(2^{n/3})}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="false" scriptlevel="0">
<mi>O</mi>
<mo stretchy="false">(</mo>
<msup>
<mn>2</mn>
<mrow class="MJX-TeXAtom-ORD">
<mi>n</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>3</mn>
</mrow>
</msup>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\textstyle O(2^{n/3})}</annotation>
</semantics>
</math></span><img src="./18770048605c58deca48cffc5dd04e2b3430d372.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:7.607ex; height:3.176ex;" alt="{\textstyle O(2^{n/3})}" loading="lazy"></span>, but it is a <a href="Randomized_algorithm" title="Randomized algorithm">randomized algorithm</a> that only solves the decision problem (not the optimization problem).</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Hard_instances_and_phase-transition">Hard instances and phase-transition</h2></div>
<p>Sets with only one, or no partitions tend to be hardest (or most expensive) to solve compared to their input sizes. When the values are small compared to the size of the set, perfect partitions are more likely. The problem is known to undergo a "<a href="Phase_transition" title="Phase transition">phase transition</a>"; being likely for some sets and unlikely for others. If m is the number of bits needed to express any number in the set and n is the size of the set then <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle m/n<1}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>m</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mi>n</mi>
<mo>&lt;</mo>
<mn>1</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle m/n&lt;1}</annotation>
</semantics>
</math></span><img src="./586f2b7edbc70edf186da5e2adbb45678147f526.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:8.858ex; height:2.843ex;" alt="{\displaystyle m/n<1}" loading="lazy"></span> tends to have many solutions and <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle m/n>1}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>m</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mi>n</mi>
<mo>&gt;</mo>
<mn>1</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle m/n&gt;1}</annotation>
</semantics>
</math></span><img src="./713b2a6165d771e8242b7f647dcc9d137f8c5f87.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:8.858ex; height:2.843ex;" alt="{\displaystyle m/n>1}" loading="lazy"></span> tends to have few or no solutions. As n and m get larger, the probability of a perfect partition goes to 1 or 0 respectively. This was originally argued based on empirical evidence by Gent and Walsh,<sup id="cite_ref-FOOTNOTEGentWalsh1996_10-0" class="reference"><a href="#cite_note-FOOTNOTEGentWalsh1996-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> then using methods from statistical physics by Mertens,<sup id="cite_ref-FOOTNOTEMertens1998_11-0" class="reference"><a href="#cite_note-FOOTNOTEMertens1998-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-FOOTNOTEMertens2001130_12-0" class="reference"><a href="#cite_note-FOOTNOTEMertens2001130-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> and later proved by <a href="Christian_Borgs" title="Christian Borgs">Borgs</a>, <a href="Jennifer_Tour_Chayes" title="Jennifer Tour Chayes">Chayes</a>, and Pittel.<sup id="cite_ref-FOOTNOTEBorgsChayesPittel2001_13-0" class="reference"><a href="#cite_note-FOOTNOTEBorgsChayesPittel2001-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Probabilistic_version">Probabilistic version</h2></div>
<p>A related problem, somewhat similar to the <a href="Birthday_paradox" class="mw-redirect" title="Birthday paradox">Birthday paradox</a>, is that of determining the size of the input set so that we have a probability of one half that there is a solution, under the assumption that each element in the set is randomly selected with uniform distribution between 1 and some given value. The solution to this problem can be counter-intuitive, like the birthday paradox.
</p>
<div class="mw-heading mw-heading2"><h2 id="Variants_and_generalizations">Variants and generalizations</h2></div>
<p><b>Equal-cardinality partition</b> is a variant in which both parts should have an equal number of items, in addition to having an equal sum. This variant is NP-hard too.<sup id="cite_ref-Garey_&amp;_Johnson_5-1" class="reference"><a href="#cite_note-Garey_&amp;_Johnson-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup class="reference nowrap"><span title="Page: SP12">: SP12 </span></sup> <i>Proof</i>. Given a standard Partition instance with some <i>n</i> numbers, construct an Equal-Cardinality-Partition instance by adding <i>n</i> zeros. Clearly, the new instance has an equal-cardinality equal-sum partition iff the original instance has an equal-sum partition. See also <b><a href="Balanced_number_partitioning" title="Balanced number partitioning">Balanced number partitioning</a></b>.
</p><p><b>Product partition</b> is the problem of partitioning a set of integers into two sets with the same <i>product</i> (rather than the same sum). This problem is <a href="Strong_NP-completeness" title="Strong NP-completeness">strongly NP-hard</a>.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p><p>Kovalyov and Pesch<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> discuss a generic approach to proving NP-hardness of partition-type problems.
</p>
<div class="mw-heading mw-heading2"><h2 id="Applications">Applications</h2></div>
<p>One application of the partition problem is for manipulation of <a href="Elections" class="mw-redirect" title="Elections">elections</a>. Suppose there are three candidates (A, B and C). A single candidate should be elected using a voting rule based on scoring, e.g. the veto rule (each voter vetoes a single candidate and the candidate with the fewest vetoes wins). If a coalition wants to ensure that C is elected, they should partition their votes among A and B so as to maximize the smallest number of vetoes each of them gets. If the votes are weighted, then the problem can be reduced to the partition problem, and thus it can be solved efficiently using CKK. The same is true for any other voting rule that is based on scoring.<sup id="cite_ref-Walsh_324–329_16-0" class="reference"><a href="#cite_note-Walsh_324–329-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Notes">Notes</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-FOOTNOTEKorf1998-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-FOOTNOTEKorf1998_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-FOOTNOTEKorf1998_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a href="#CITEREFKorf1998">Korf 1998</a>.</span>
</li>
<li id="cite_note-hayes-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-hayes_2-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFHayes2002" class="citation cs2"><a href="Brian_Hayes_(scientist)" title="Brian Hayes (scientist)">Hayes, Brian</a> (March–April 2002), <a rel="nofollow" class="external text" href="http://bit-player.org/bph-publications/AmSci-2002-03-Hayes-NPP.pdf">"The Easiest Hard Problem"</a> <span class="cs1-format">(PDF)</span>, <i><a href="American_Scientist" title="American Scientist">American Scientist</a></i>, vol.&nbsp;90, no.&nbsp;2, Sigma Xi, The Scientific Research Society, pp.&nbsp;<span class="nowrap">113–</span>117, <a href="JSTOR_(identifier)" class="mw-redirect" title="JSTOR (identifier)">JSTOR</a>&nbsp;<a rel="nofollow" class="external text" href="https://www.jstor.org/stable/27857621">27857621</a></cite></span>
</li>
<li id="cite_note-FOOTNOTEMertens2006[httpsbooksgooglecombooksid4YD6AxV95zECpgPA125_125]-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEMertens2006[httpsbooksgooglecombooksid4YD6AxV95zECpgPA125_125]_3-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFMertens2006">Mertens 2006</a>, p.&nbsp;<a rel="nofollow" class="external text" href="https://books.google.com/books?id=4YD6AxV95zEC&amp;pg=PA125">125</a>.</span>
</li>
<li id="cite_note-multi-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-multi_4-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFKorf2009" class="citation conference cs1"><a href="Richard_E._Korf" title="Richard E. Korf">Korf, Richard E.</a> (2009). <a rel="nofollow" class="external text" href="http://ijcai.org/papers09/Papers/IJCAI09-096.pdf"><i>Multi-Way Number Partitioning</i></a> <span class="cs1-format">(PDF)</span>. <a href="IJCAI" class="mw-redirect" title="IJCAI">IJCAI</a>.</cite></span>
</li>
<li id="cite_note-Garey_&amp;_Johnson-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-Garey_&amp;_Johnson_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Garey_&amp;_Johnson_5-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFGareyJohnson1979" class="citation book cs1">Garey, Michael; Johnson, David (1979). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/computersintract0000gare"><i>Computers and Intractability; A Guide to the Theory of NP-Completeness</i></a></span>. pp.&nbsp;<a rel="nofollow" class="external text" href="https://archive.org/details/computersintract0000gare/page/96">96–105</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-7167-1045-5</bdi>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFGoodrich" class="citation web cs1">Goodrich, Michael. <a rel="nofollow" class="external text" href="https://www.ics.uci.edu/~goodrich/teach/cs162/notes/pnp3.pdf">"More NP complete and NP hard problems"</a> <span class="cs1-format">(PDF)</span>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite id="CITEREFHans_KellererUlrich_PferschyDavid_Pisinger2004" class="citation book cs1">Hans Kellerer; Ulrich Pferschy; David Pisinger (2004). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=u5DB7gck08YC&amp;pg=PA97"><i>Knapsack problems</i></a>. Springer. p.&nbsp;97. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9783540402862</bdi>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFMartelloToth1990" class="citation book cs1">Martello, Silvano; Toth, Paolo (1990). <a rel="nofollow" class="external text" href="https://archive.org/details/knapsackproblems0000mart/page/105">"4 Subset-sum problem"</a>. <i>Knapsack problems: Algorithms and computer interpretations</i>. Wiley-Interscience. pp.&nbsp;<a rel="nofollow" class="external text" href="https://archive.org/details/knapsackproblems0000mart/page/105">105–136</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-0-471-92420-3</bdi>. <a href="MR_(identifier)" class="mw-redirect" title="MR (identifier)">MR</a>&nbsp;<a rel="nofollow" class="external text" href="https://mathscinet.ams.org/mathscinet-getitem?mr=1086874">1086874</a>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFKorf1995" class="citation conference cs1"><a href="Richard_E._Korf" title="Richard E. Korf">Korf, Richard E.</a> (1995-08-20). <a rel="nofollow" class="external text" href="https://dl.acm.org/doi/abs/10.5555/1625855.1625890">"From approximate to optimal solutions: a case study of number partitioning"</a>. <i>Proceedings of the 14th International Joint Conference on Artificial Intelligence</i>. IJCAI'95. Vol.&nbsp;1. Montreal, Quebec, Canada: Morgan Kaufmann Publishers. pp.&nbsp;<span class="nowrap">266–</span>272. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1-55860-363-9</bdi>.</cite></span>
</li>
<li id="cite_note-FOOTNOTEGentWalsh1996-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEGentWalsh1996_10-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFGentWalsh1996">Gent &amp; Walsh 1996</a>.</span>
</li>
<li id="cite_note-FOOTNOTEMertens1998-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEMertens1998_11-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFMertens1998">Mertens 1998</a>.</span>
</li>
<li id="cite_note-FOOTNOTEMertens2001130-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEMertens2001130_12-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFMertens2001">Mertens 2001</a>, p.&nbsp;130.</span>
</li>
<li id="cite_note-FOOTNOTEBorgsChayesPittel2001-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTEBorgsChayesPittel2001_13-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFBorgsChayesPittel2001">Borgs, Chayes &amp; Pittel 2001</a>.</span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite id="CITEREFNgBarketauChengKovalyov2010" class="citation journal cs1">Ng, C. T.; Barketau, M. S.; Cheng, T. C. E.; Kovalyov, Mikhail Y. (2010-12-01). <span class="id-lock-subscription" title="Paid subscription required"><a rel="nofollow" class="external text" href="http://www.sciencedirect.com/science/article/pii/S0377221710003905">""Product Partition" and related problems of scheduling and systems reliability: Computational complexity and approximation"</a></span>. <i>European Journal of Operational Research</i>. <b>207</b> (2): <span class="nowrap">601–</span>604. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2Fj.ejor.2010.05.034">10.1016/j.ejor.2010.05.034</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0377-2217">0377-2217</a>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite id="CITEREFKovalyovPesch2010" class="citation journal cs1">Kovalyov, Mikhail Y.; Pesch, Erwin (2010-10-28). <a rel="nofollow" class="external text" href="https://doi.org/10.1016%2Fj.dam.2010.08.001">"A generic approach to proving NP-hardness of partition type problems"</a>. <i>Discrete Applied Mathematics</i>. <b>158</b> (17): <span class="nowrap">1908–</span>1912. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1016%2Fj.dam.2010.08.001">10.1016/j.dam.2010.08.001</a></span>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0166-218X">0166-218X</a>.</cite></span>
</li>
<li id="cite_note-Walsh_324–329-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-Walsh_324–329_16-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFWalsh2009" class="citation conference cs1 cs1-prop-location-test"><a href="Toby_Walsh" title="Toby Walsh">Walsh, Toby</a> (2009-07-11). <a rel="nofollow" class="external text" href="https://www.ijcai.org/Proceedings/09/Papers/062.pdf">"Where Are the Really Hard Manipulation Problems? The Phase Transition in Manipulating the Veto Rule"</a> <span class="cs1-format">(PDF)</span>. Written at Pasadena, California, USA. <i>Proceedings of the Twenty-First International Joint Conference on Artificial Intelligence</i>. San Francisco, California, USA: <a href="Morgan_Kaufmann_Publishers_Inc." class="mw-redirect" title="Morgan Kaufmann Publishers Inc.">Morgan Kaufmann Publishers Inc.</a> pp.&nbsp;<span class="nowrap">324–</span>329. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20200710070551/https://www.ijcai.org/Proceedings/09/Papers/062.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 2020-07-10<span class="reference-accessdate">. Retrieved <span class="nowrap">2021-10-05</span></span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<ul><li><cite id="CITEREFBorgsChayesPittel2001" class="citation cs2">Borgs, Christian; Chayes, Jennifer; Pittel, Boris (2001), "Phase transition and finite-size scaling for the integer partitioning problem", <i>Random Structures and Algorithms</i>, <b>19</b> (<span class="nowrap">3–</span>4): <span class="nowrap">247–</span>288, <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.89.9577">10.1.1.89.9577</a></span>, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1002%2Frsa.10004">10.1002/rsa.10004</a>, <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:6819493">6819493</a></cite></li>
<li><cite id="CITEREFGentWalsh1996" class="citation conference cs1">Gent, Ian; Walsh, Toby (August 1996). "Phase Transitions and Annealed Theories: Number Partitioning as a Case Study". In Wolfgang Wahlster (ed.). <i>Proceedings of 12th European Conference on Artificial Intelligence</i>. ECAI-96. John Wiley and Sons. pp.&nbsp;<span class="nowrap">170–</span>174. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.2.4475">10.1.1.2.4475</a></span>.</cite></li>
<li><cite id="CITEREFGentWalsh1998" class="citation cs2">Gent, Ian; Walsh, Toby (1998), "Analysis of Heuristics for Number Partitioning", <i>Computational Intelligence</i>, <b>14</b> (3): <span class="nowrap">430–</span>451, <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.149.4980">10.1.1.149.4980</a></span>, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1111%2F0824-7935.00069">10.1111/0824-7935.00069</a>, <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:15344203">15344203</a></cite></li>
<li><cite id="CITEREFKorf1998" class="citation cs2"><a href="Richard_E._Korf" title="Richard E. Korf">Korf, Richard E.</a> (1998), "A complete anytime algorithm for number partitioning", <i>Artificial Intelligence</i>, <b>106</b> (2): <span class="nowrap">181–</span>203, <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.90.993">10.1.1.90.993</a></span>, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2FS0004-3702%2898%2900086-1">10.1016/S0004-3702(98)00086-1</a>, <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0004-3702">0004-3702</a></cite></li>
<li><cite id="CITEREFMertens1998" class="citation cs2">Mertens, Stephan (November 1998), "Phase Transition in the Number Partitioning Problem", <i>Physical Review Letters</i>, <b>81</b> (20): <span class="nowrap">4281–</span>4284, <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/cond-mat/9807077">cond-mat/9807077</a></span>, <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/1998PhRvL..81.4281M">1998PhRvL..81.4281M</a>, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1103%2FPhysRevLett.81.4281">10.1103/PhysRevLett.81.4281</a>, <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:119541289">119541289</a></cite></li>
<li><cite id="CITEREFMertens2001" class="citation cs2">Mertens, Stephan (2001), "A physicist's approach to number partitioning", <i>Theoretical Computer Science</i>, <b>265</b> (<span class="nowrap">1–</span>2): <span class="nowrap">79–</span>108, <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/cond-mat/0009230">cond-mat/0009230</a></span>, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2FS0304-3975%2801%2900153-0">10.1016/S0304-3975(01)00153-0</a>, <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a>&nbsp;<a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:16534837">16534837</a></cite></li>
<li><cite id="CITEREFMertens2006" class="citation book cs1">Mertens, Stephan (2006). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=4YD6AxV95zEC&amp;pg=PA125">"The Easiest Hard Problem: Number Partitioning"</a>. In Allon Percus; Gabriel Istrate; <a href="Cris_Moore" class="mw-redirect" title="Cris Moore">Cristopher Moore</a> (eds.). <i>Computational complexity and statistical physics</i>. USA: Oxford University Press. pp.&nbsp;<span class="nowrap">125–</span>140. <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/cond-mat/0310317">cond-mat/0310317</a></span>. <a href="Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2003cond.mat.10317M">2003cond.mat.10317M</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>9780195177374</bdi>.</cite></li>
<li><cite id="CITEREFMertens1999" class="citation arxiv cs2">Mertens, Stephan (1999), "A complete anytime algorithm for balanced number partitioning", <a href="ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/cs/9903011">cs/9903011</a></span></cite></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-06-24" href="https://en.wikipedia.org/wiki/?title=Partition_problem&amp;oldid=1297073699">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>